// pages/profile/edit.js
import auth from '../../utils/auth'
const app = getApp()

Page({
  data: {
    userInfo: {
      id: '',
      nickname: '',
      avatar: '',
      real_name: ''
    },
    tempUserInfo: {
      nickname: '',
      avatar: '',
      real_name: ''
    },
    loading: false,
    hasChanged: false
  },

  onLoad(options) {
    this.initPage()
  },

  // 页面显示时检查状态
  onShow() {
    
  },



  // 初始化页面
  initPage() {
    this.loadUserInfo()
  },

  // 加载用户信息
  async loadUserInfo() {
    try {
      this.setData({ loading: true })
      
      // 检查登录状态
      if (!auth.checkLoginStatus()) {
        wx.showModal({
          title: '需要登录',
          content: '请先登录后再编辑资料',
          confirmText: '去登录',
          success: (res) => {
            if (res.confirm) {
              auth.navigateToLogin()
            } else {
              wx.navigateBack()
            }
          }
        })
        return
      }
      
      // 从服务器获取最新用户信息
      const userInfo = await auth.getUserProfile()
      
      this.setData({
        userInfo: userInfo,
        tempUserInfo: {
          nickname: userInfo.nickname || '',
          avatar: userInfo.avatar || '',
          real_name: userInfo.real_name || ''
        },
        hasChanged: false
      })
      
    } catch (error) {
      console.error('加载用户信息失败:', error)
      
      // 如果是401错误，提示重新登录
      if (error.message && error.message.includes('401')) {
        wx.showModal({
          title: '登录已过期',
          content: '请重新登录',
          confirmText: '去登录',
          success: (res) => {
            if (res.confirm) {
              auth.logout()
              auth.navigateToLogin()
            } else {
              wx.navigateBack()
            }
          }
        })
      } else {
        wx.showToast({
          title: '加载失败',
          icon: 'error'
        })
      }
      
      // 确保tempUserInfo有默认值
      if (!this.data.tempUserInfo || !this.data.tempUserInfo.nickname) {
        this.setData({
          tempUserInfo: {
            nickname: '',
            avatar: '',
            real_name: ''
          }
        })
      }
    } finally {
      this.setData({ loading: false })
    }
  },

  // 选择头像 - 使用最新的微信小程序API
  async onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    
    try {
      wx.showLoading({ title: '上传中...' })
      
      // 上传头像到服务器
      const result = await auth.uploadAvatar(avatarUrl)
      
      // 构建完整的头像URL
      let serverAvatarUrl = result.avatar_url || result.url
      
      // 确保使用完整的服务器URL
      if (serverAvatarUrl && !serverAvatarUrl.startsWith('http')) {
        serverAvatarUrl = `https://nzy.congqian.cn${serverAvatarUrl.startsWith('/') ? '' : '/'}${serverAvatarUrl}`
      }
      
      // 更新为服务器返回的头像URL
      this.setData({
        'tempUserInfo.avatar': serverAvatarUrl || avatarUrl,
        hasChanged: true
      })
      
      wx.showToast({
        title: '头像上传成功',
        icon: 'success'
      })
      
    } catch (error) {
      console.error('头像上传失败:', error)
      // 上传失败时显示默认头像
      this.setData({
        'tempUserInfo.avatar': '/assets/images/default-avatar.png',
        hasChanged: true
      })
      wx.showToast({
        title: '头像上传失败',
        icon: 'error'
      })
    } finally {
      wx.hideLoading()
    }
  },



  // 昵称输入事件 - 使用最新的微信小程序API
  onNicknameChange(e) {
    const { value } = e.detail
    
    this.setData({
      'tempUserInfo.nickname': value,
      hasChanged: true
    })
    
  },

  // 手动输入昵称
  onNicknameInput(e) {
    const { value } = e.detail
    
    this.setData({
      'tempUserInfo.nickname': value,
      hasChanged: true
    })
    
  },

  // 通用输入处理
  onInputChange(e) {
    const { field } = e.currentTarget.dataset
    const { value } = e.detail
    
    this.setData({
      [`tempUserInfo.${field}`]: value,
      hasChanged: true
    })
  },







  // 保存用户信息
  async saveUserInfo() {
    
    // 确保tempUserInfo存在
    if (!this.data.tempUserInfo) {
      wx.showToast({
        title: '数据异常，请重新进入页面',
        icon: 'none'
      })
      return
    }
    
    if (!this.data.hasChanged) {
      wx.showToast({
        title: '没有修改内容',
        icon: 'none'
      })
      return
    }

    if (this.data.loading) {
      return
    }

    // 基本验证 - 简化昵称验证逻辑
    const nickname = this.data.tempUserInfo.nickname
    if (!nickname || nickname.trim().length === 0) {
      wx.showToast({
        title: '请输入昵称',
        icon: 'none'
      })
      return
    }
    

    try {
      this.setData({ loading: true })
      
      // 构建要更新的数据
      const updateData = {
        nickname: this.data.tempUserInfo.nickname.trim(),
        avatar: this.data.tempUserInfo.avatar,
        real_name: this.data.tempUserInfo.real_name.trim()
      }
      
      // 调用API保存到服务器
      const result = await auth.updateUserInfo(updateData)
      
      // 更新本地数据
      this.setData({
        userInfo: { ...this.data.userInfo, ...updateData },
        hasChanged: false
      })
      
      wx.showToast({
        title: '保存成功',
        icon: 'success'
      })
      
      // 延迟返回上一页
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
      
    } catch (error) {
      console.error('保存用户信息失败:', error)
      wx.showToast({
        title: error.message || '保存失败',
        icon: 'error'
      })
    } finally {
      this.setData({ loading: false })
    }
  },





  // 页面卸载时的提醒
  onUnload() {
    if (this.data.hasChanged) {
      // 可以在这里添加未保存提醒逻辑
    }
  }
})